/*
 * MDI.java
 *
 * Created on 11 de enero de 2005, 17:33
 */

package vistas;

import javax.swing.*;

import rmi.InterfazRemota;

import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyVetoException;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Vector;

public class MDI extends javax.swing.JFrame {
	
	private JDesktopPane desktop;
    private JMenuItem menuConectar;
    private JMenuItem menuDesconectar;
    private JMenuItem menuNuevo;
    private JMenuItem menuInbox;
    private JMenuItem menuSentItems;
    private JMenuItem menuSalir;	
    private JMenuItem menuAcercaDe;
    private InterfazRemota objetoRemoto;   
    private int id_casilla;
    private String servidor;
    private String puerto;
    
    
	private static final long serialVersionUID = 1L;
	
    public InterfazRemota getObjetoRemoto() {
		return objetoRemoto;
	}

	public void setObjetoRemoto(InterfazRemota objetoRemoto) {
		this.objetoRemoto = objetoRemoto;
	}


	public MDI() {

    	int inset = 120;
        configurarMenu();
        iniComponentes();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(inset, inset, screenSize.width - inset*2, 
                                screenSize.height - inset*2); 
    }

    public JDesktopPane getDesktop() { return this.desktop; }
    
    private void configurarMenu() {
        JMenuBar menuBar = new JMenuBar();
	    setJMenuBar(menuBar);
        
        JMenu menuArchivo = new JMenu();
        menuArchivo.setText("Archivo");
	    menuBar.add(menuArchivo);

        JMenu menuAyuda = new JMenu();
        menuAyuda.setText("Ayuda");
	    menuBar.add(menuAyuda);

	    menuAcercaDe = new JMenuItem();
	    menuAcercaDe.setText("Acerca de...");
	    menuAcercaDe.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new VistaAcercaDe();
				
			}
	    	
	    });
	    menuAyuda.add(menuAcercaDe);
	    
	    menuConectar =  new JMenuItem();
	    menuConectar.setText("Conectar");
	    menuConectar.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				conectar(e);

			}
	    	
	    });
	    menuArchivo.add(menuConectar);
	    
	    menuDesconectar =  new JMenuItem();
	    menuDesconectar.setText("Desconectar");
	    menuDesconectar.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				menuNuevo.setVisible(false);
				menuInbox.setVisible(false);
				menuSentItems.setVisible(false);
				menuDesconectar.setVisible(false);
				setId_casilla(-1);
				setServidor("");
				setPuerto("");

			}
	    	
	    });
	    menuArchivo.add(menuDesconectar);
	    	    
	    
        menuNuevo = new JMenuItem();
	    menuNuevo.setText("Nuevo");
	    menuNuevo.addActionListener(new ActionListener() {
	        public void actionPerformed(ActionEvent evt) {
	            nuevo(evt);
	            
	        }
	    });
	    menuArchivo.add(menuNuevo);
	    
	    menuInbox = new JMenuItem();
	    menuInbox.setText("Bandeja de entrada");
	    menuInbox.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				inbox(e);
				
			}
	    	
	    });
	    menuArchivo.add(menuInbox);
	    
	    menuSentItems = new JMenuItem();
	    menuSentItems.setText("Elementos Enviados");
	    menuSentItems.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				enviados(e);
				
			}
	    	
	    });
	    menuArchivo.add(menuSentItems);
	    
	    menuArchivo.add(new JSeparator());
	    
        menuSalir = new JMenuItem();
	    menuSalir.setText("Salir");
	    menuSalir.addActionListener(new ActionListener() {
	        public void actionPerformed(ActionEvent evt) {
	        	System.exit(0);
	        }
	    });
	    
	    
	    menuArchivo.add(menuSalir);
	    
	    menuNuevo.setVisible(false);
	    menuInbox.setVisible(false);
	    menuSentItems.setVisible(false);
    }

    private void iniComponentes() {
        setTitle("MDI");
	    setName("MDIFrame");
	    
	    desktop = new JDesktopPane();
	    getContentPane().add(desktop, BorderLayout.CENTER);
	    
	    addWindowListener(new WindowAdapter() {
	        public void windowClosing(WindowEvent evt) {
	        	System.exit(0);
	        }
	    });
    }

    private void conectar(ActionEvent evt) {
        MDIChildConectar frm = new MDIChildConectar(this);
        frm.setTitle("Conectar " + MDIChildConectar.inset);
        frm.setVisible(true);
        desktop.add(frm);
        try {
			frm.setSelected(true);
		} catch (PropertyVetoException e) {	}
     }
    
    
    private void nuevo(ActionEvent evt) {
        MDIChildCorreoNuevo frm = new MDIChildCorreoNuevo(this);
        frm.setTitle("Correo Nuevo " + MDIChildCorreoNuevo.inset);
        frm.setVisible(true);
        desktop.add(frm);
        try {
			frm.setSelected(true);
		} catch (PropertyVetoException e) {	}
     }

    public void abrirCorreo(ActionEvent evt) {
        MDIChildCorreoAbrir frm = new MDIChildCorreoAbrir(this);
        frm.setTitle("Correo Abierto " + MDIChildCorreoAbrir.inset);
        frm.setVisible(true);
        desktop.add(frm);
        try {
			frm.setSelected(true);
		} catch (PropertyVetoException e) {	}
     }
    
    private void inbox(ActionEvent evt) {
        MDIChildInbox frm = new MDIChildInbox(this,id_casilla);
        frm.setTitle("Bandeja de Entrada " + MDIChildInbox.inset);
        frm.setVisible(true);
        desktop.add(frm);
        try {
			frm.setSelected(true);
		} catch (PropertyVetoException e) {	}
     }
    
    private void enviados(ActionEvent evt) {
        MDIChildEnviados frm = new MDIChildEnviados(this,id_casilla);
        frm.setTitle("Elementos Enviados " + MDIChildEnviados.inset);
        frm.setVisible(true);
        desktop.add(frm);
        try {
			frm.setSelected(true);
		} catch (PropertyVetoException e) {	}
     }
    
    public void establecerConexion(){
    	try {
			//objetoRemoto = (InterfazRemota) Naming.lookup("//localhost/ObjetoRemoto");
    		objetoRemoto = (InterfazRemota) Naming.lookup("//"+servidor+":"+puerto+"/ObjetoRemoto");
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
    
    public void habilitarOpciones(){
		menuDesconectar.setVisible(true);
		menuNuevo.setVisible(true);
		menuInbox.setVisible(true);
		menuSentItems.setVisible(true);
    }
    
    
    public String getPuerto() {
		return puerto;
	}

	public void setPuerto(String puerto) {
		this.puerto = puerto;
	}

	public String getServidor() {
		return servidor;
	}

	public void setServidor(String servidor) {
		this.servidor = servidor;
	}

	public Vector<String> datos;
    
    public Vector<String> getDatos() {
		return datos;
	}

	public void setDatos(Vector<String> datos) {
		this.datos = datos;
	}

	public int getId_casilla() {
		return id_casilla;
	}

	public void setId_casilla(int id_casilla) {
		this.id_casilla = id_casilla;
	}

 }
